#!/bin/bash

# 检查文件是否提供了参数
if [ $# -ne 1 ]; then
    echo "请提供要解压的文件！"
    exit 1
fi

# 获取输入的文件名
file=$1

# 获取文件扩展名
extension="${file##*.}"

# 默认不删除压缩包
remove=false

# 如果文件名包含 "-r" 后缀，设置为删除压缩包
if [[ "$file" == *-r ]]; then
    remove=true
    file="${file%-r}"  # 删除文件名中的 "-r" 后缀
fi

# 根据扩展名判断并解压
case "$extension" in
    gz)
        echo "解压 .gz 文件..."
        gunzip -c "$file.gz" > "$file"
        ;;
    bz2)
        echo "解压 .bz2 文件..."
        bunzip2 -c "$file.bz2" > "$file"
        ;;
    xz)
        echo "解压 .xz 文件..."
        unxz -c "$file.xz" > "$file"
        ;;
    zip)
        # 特别处理 .zip 文件，避免重复添加 .zip 后缀
        echo "解压 .zip 文件..."
        if [[ -f "$file.zip" ]]; then
            unzip -o "$file" -d .  # 解压到当前目录
        else
            unzip -o "$file" -d .  # 解压时直接使用传入的文件名
        fi
        ;;
    *)
        echo "不认识文件类型：$file"
        exit 1
        ;;
esac

# 根据用户选择决定是否删除压缩包
if [ "$remove" = true ]; then
    case "$extension" in
        gz)
            rm "$file.gz"
            ;;
        bz2)
            rm "$file.bz2"
            ;;
        xz)
            rm "$file.xz"
            ;;
        zip)
            rm "$file.zip"
            ;;
    esac
    echo "压缩包已删除：$file.$extension"
else
    echo "压缩包已保留：$file.$extension"
fi
